<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\dao\system\config;

use app\dao\BaseDao;
use app\model\system\config\SystemStorage;
use hdphp\traits\SearchDaoTrait;

/**
 * Class：SystemStorageDao
 * 创建人：Jack
 * 创建时间：2023/11/28 10:36
 * @package app\dao\system\config
 */
class SystemStorageDao extends BaseDao
{

    use SearchDaoTrait;

    /**
     * @return string
     */
    protected function setModel(): string
    {
        return SystemStorage::class;
    }

    /**
     * 注释：search
     * 创建人：Jack
     * 创建时间：2023/11/28 11:08
     * @param array $where
     * @param bool  $search
     * @return \hdphp\basic\BaseModel|\think\Model
     */
    public function search(array $where = [], bool $search = false)
    {
        return parent::search($where, $search)->when(isset($where['type']), function ($query) use ($where) {
            $query->where('type', $where['type']);
        })->where('is_delete', 0)->when(isset($where['access_key']), function ($query) use ($where) {
            $query->where('access_key', $where['access_key']);
        })->when(!empty($where['id']), function ($query) use ($where) {
            $query->where('id', $where['id']);
        });
    }

    /**
     * 注释：获取分页列表
     * 创建人：Jack
     * 创建时间：2023/11/28 10:48
     * @param array $where
     * @param array $field
     * @param int   $page
     * @param int   $limit
     * @return array
     */
    public function getStorageList(array $where, array $field = ['*'], int $page = 0, int $limit = 0)
    {
        return $this->search($where)->field($field)->when($page && $limit, function ($query) use ($page, $limit) {
            $query->page($page, $limit);
        })->order('create_time desc')->select()->toArray();
    }

    /**
     * 注释：getCount
     * 创建人：Jack
     * 创建时间：2023/11/28 10:49
     * @param array $where
     * @return int
     */
    public function getCount(array $where)
    {
        return $this->search($where)->count();
    }
}
